正则表达式的作用：匹配特殊字符或有特殊搭配原则的字符的最佳选择。

<script type="text/javascript">
	//RegExp  第一种创建方法
	var reg = /abc/i;//ingnoreCase 
	var str = "abc";
	console.log(reg.test(str));

	//第二种创建方法
	var reg = new RegExp('abc',"m");

	var reg1 = new RegExp(reg);

</script>

<script type="text/javascript">
	var reg = /ab/g;//全局匹配
	var str = "ababab";
	console.log(str.match(reg));

	
</script>

<script type="text/javascript">
	var reg = /^a/gm;//开头a，m多行匹配和开头结尾配合用
	var str = "abca\na";// \n换行
	console.log(str.match(reg));
</script>

str.test();判断字符串有没有符合要求的片段
str.march() ； 匹配所有结果返回出来，比true和false更直观

<script type="text/javascript">
	var reg =/[0123456789][0123456789][0123456789]/g;//[]一位数，从0-9任取一位
	var str = "dsa1234fg678hj78";
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	var reg = /[0-9A-z][bc][d]/g;//一个表达式添的是一位，里面代表的是区间  [0-9A-z]
	var str = "abcd";
	console.log(str.match(reg));

	var reg = /[^a][^6]/g;//^放[]里代表非a,第一位不是a,第二位不是6
	var str = "a6676";
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	var reg = /(abc|bcd)[0-9]/g; //abc或bcd
	var str = "bcd2";
	console.log(str.match(reg));
</script>

元字符
metacharacter
\w === [0-9A-z_]
\W === [^\w] ;非，取补集
\d === [0-9]
\D
\s === [\t\n\r\v\f] 查找空白字符		空格，制表，回车，换页，垂直换行
\S
\b ===		单词边界
. === [^\r\n]

n+ 可以出现1到无数次
n* 0-正无穷
n? 0-1个
n{X} x个
<script type="text/javascript">
	var reg = /\d\w/;//表达式可以写多个元字符
</script>

<script type="text/javascript">
	var reg = /\tc/g;
	var str = "abc\tc";
	var str1 = "abc	   c";
	console.log(str.match(reg));
	console.log(str1.match(reg));
</script>

\u0000
16位unicode编码
16层unicode编码
\u010000 - \u01ffff 一层
\u020000 - \u02ffff 二层
...
\u100000 - \u10ffff 16层

<script type="text/javascript">
	var reg = /\u4f60\u597d/g;
	var str = "你好";
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	var reg = /\w+/g;// \w+ 可以出现1次到多次
	var str = "abc";
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	var reg = /a/g;
	var str = "abc";
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	//贪婪匹配原则
	var reg = /\w*/g;// \w*可出现0到多次
	var str = "abc";
	console.log(str.match(reg));//能匹配多就不匹配少，识别到a，先一连串识别bc

	var reg = /\w+/g;
	var str = "aaaaaa";
	console.log(str.match(reg));//贪婪匹配原则


</script>


<script type="text/javascript">
	var reg = /\d*/g;
	var str = "abc";
	console.log(str.match(reg));
</script>

n{x,y} 	x到y个
<script type="text/javascript">
	var reg = /\w{2,4}/g;
	var str = "aaaaaaaaaa"
	console.log(str.match(reg));
</script>

n{1,}  1到无穷 类似n+

n{x,}  x到无穷

$ 结尾

<script type="text/javascript">
	var reg = /as$/g;//以as结尾
	var str = "asasas";
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	var reg = /^abc$/g;//以abc开头以abc结尾，限制字符串长度
	var str = "abcabc";
	console.log(str.match(reg));
</script>

检验一个字符串检验首尾是否含有数字; 首有或尾有
<script type="text/javascript">
	var reg = /^\d|\d$/g;
	var str = "123asd"
	console.log(str.match(reg));
	console.log(reg.test(str));
</script>

首尾都含有数字
<script type="text/javascript">
	var reg = /^\d[\s\S]\d$/g;	//中间任何一个区间出现0-无数次

</script>


reg.exec()  匹配方法
 
 <script type="text/javascript">
 	var reg = /ab/; //不加g，lastIndex永远从0开始匹配
 	var str = "abababab";
 	reg.exec();
 	console.log(reg.lastIndex);
 	console.log(reg.exec(str));

 	console.log(reg.lastIndex);
 	console.log(reg.exec(str));
 </script>

<script type="text/javascript">
	var str = "aaaa"; //匹配如xxxx
	var reg = /(a)\1/g;//括号除表达式还有一个意思，子表达式，在特殊情况下，括号会记录里面匹配的内容，记录之后可以利用\引用出来,叫方向引用;\1叫做反向引用第一个子表达式里匹配的内容；
	var reg = /(\w)\1\1\1/g; //反向引用三次
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	var str = "aabb";
	var reg = /(\w)\1(\w)\2/g;
	console.log(str.match(reg));
</script>

<script type="text/javascript">
	var str = "asd";
	var reg = /(\w)\1(\w)\2/g;
	console.log(str.search(reg));//返回匹配的位置
</script>

split
<script type="text/javascript">
	var str = "dskgjwwdsdeefdfff";
	var reg = /(\w)\1/g;
	console.log(str.split(reg));
</script>

replace
<script type="text/javascript">
	var str = "aa";
	console.log(str.replace("a", "b"));//ba,非正则表达式的缺陷，不能访问全局

	var reg = /a/g;
	console.log(str.replace(reg,"b"));
</script>

